

package frsf.cidisi.exercise.modelo.search;

import java.util.List;

import frsf.cidisi.exercise.modelo.util.Coordenada;
import frsf.cidisi.exercise.modelo.util.Orientacion;
import frsf.cidisi.exercise.modelo.util.Salida;
import frsf.cidisi.faia.agent.search.GoalTest;
import frsf.cidisi.faia.state.AgentState;

public class AgenteMeta extends GoalTest {

    @Override
    public boolean isGoalState (AgentState agentState) {
    
    	Coordenada posicion = ((AgenteEstado)agentState).getPosAgente();
		Boolean tieneLlave = ((AgenteEstado)agentState).getTieneLlave();
		List<Salida> salidas = ((AgenteEstado)agentState).getSalida();
		Orientacion orientacion = ((AgenteEstado)agentState).getOrientacion();

		for(Salida salida : salidas){
			if(salida.getCoordenada().equals(posicion) && orientacion.equals(new Orientacion(3))) {
				if(!salida.getCerrada().booleanValue()) {
					return true;					
				}
				else if(tieneLlave.booleanValue()) {
					return true;
				}
			}
		}
		return false;
	}
}